﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConfiguracionFisica.Dominio
{
    public abstract class Puerto
    {

        private int numero;             //999,1000,1001,1002,1003
        private int tasaEnBaudios;      //9600
        private int cantidadBits;       //8
        private int bitParada;          //1
        private int bitParidad;         //0
        
        public Puerto(int numero)
        {
            this.numero = numero;
            validateCreation();
        }

        private void validateCreation()
        {
            if (this.numero == 0) throw new FormatException("Debe ingresar al menos un numero");
        }

        public int Numero
        {
            get { return numero; }
            set { numero = value; }
        }

        public int TasaEnBaudios
        {
            get { return tasaEnBaudios; }
            set { tasaEnBaudios = value; }
        }

        public int CantidadBits
        {
            get { return cantidadBits; }
            set { cantidadBits = value; }
        }

        public int BitParada
        {
            get { return bitParada; }
            set { bitParada = value; }
        }

        public int BitParidad
        {
            get { return bitParidad; }
            set { bitParidad = value; }
        }

        public abstract void conectarDispositivo(Dispositivo unDispositivo);

        public abstract bool tieneBarrera(Barrera barrera);

        internal abstract void ejecutarApertura(ConversorSerial conversor, Barrera barrera);

        public abstract bool tieneLector(Lector lector);
    }
}
